package com.demo.sensor;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;

import com.example.myalldemo.R;

public class SensorDemo extends Activity implements SensorEventListener {

	private SensorManager mSensorMgr;
	private Sensor mSensor;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sensordemo);

		mSensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
//		mSensor = mSensorMgr
//				.getDefaultSensor(Sensor.TYPE_ACCELEROMETER
//						| Sensor.TYPE_MAGNETIC_FIELD | Sensor.TYPE_ORIENTATION
//						| Sensor.TYPE_GYROSCOPE | Sensor.TYPE_LIGHT
//						| Sensor.TYPE_PRESSURE | Sensor.TYPE_TEMPERATURE
//						| Sensor.TYPE_PROXIMITY | Sensor.TYPE_GRAVITY
//						| Sensor.TYPE_LINEAR_ACCELERATION
//						| Sensor.TYPE_ROTATION_VECTOR);
		mSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_LIGHT);
		// 注册listener，第三个参数是检测的精确度
		// SENSOR_DELAY_FASTEST 最灵敏 因为太快了没必要使用
		// SENSOR_DELAY_GAME 游戏开发中使用
		// SENSOR_DELAY_NORMAL 正常速度
		// SENSOR_DELAY_UI 最慢的速度
	}

	@Override
	protected void onResume() {
		super.onResume();
		mSensorMgr.registerListener(this, mSensor,
				SensorManager.SENSOR_DELAY_GAME);
	}

	@Override
	protected void onStop() {
		super.onStop();
		mSensorMgr.unregisterListener(this);
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
        Log.d("SensorDemo_accuracy","onAccuracyChanged: " + sensor + ", accuracy: " + accuracy);
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		synchronized (this) {
			float[] values = event.values;
			Log.d("SensorDemo",
					"onSensorChanged: " + ", type: " + event.sensor.getType()
							+ ", x: " + values[0] + ", y: " + values[1]
							+ ", z:" + values[2]);
			switch (event.sensor.getType()) {
			case Sensor.TYPE_ACCELEROMETER:// 运动检测（振动、倾斜等）

				break;
			case Sensor.TYPE_AMBIENT_TEMPERATURE:// 监测空气温度

				break;
			case Sensor.TYPE_GRAVITY:// 运动检测（振动、倾斜等）

				break;
			case Sensor.TYPE_GYROSCOPE:// 旋转检测（旋转、翻转等）

				break;
			case Sensor.TYPE_LIGHT:// 控制屏幕的亮度

				break;
			case Sensor.TYPE_LINEAR_ACCELERATION:// 检测一个单独的物理轴的加速度。

				break;
			case Sensor.TYPE_MAGNETIC_FIELD:// 创建一个罗盘

				break;
			case Sensor.TYPE_ORIENTATION:// 判断设备的位置

				break;
			case Sensor.TYPE_PRESSURE:// 检测空气压力的变化

				break;
			case Sensor.TYPE_PROXIMITY:// 通话期间的电话位置。

				break;
			case Sensor.TYPE_RELATIVE_HUMIDITY:// 监测露点，绝对和相对的湿度。

				break;
			case Sensor.TYPE_ROTATION_VECTOR:// 运动监测和旋转监测。

				break;
			case Sensor.TYPE_TEMPERATURE:// 监测温度

				break;

			default:
				break;
			}
		}
	}

}
